home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / amiga / gui / prcgntn1.lha / Precognition / source / IntegerGadget.c < prev    next >
C/C++ Source or Header  |  1992-12-23  |  3KB  |  127 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "IntegerGadget.h"
  4. #include "IntegerGadgetClass.h"
  5. #include "StringGadgetClass.h"
  6. #include "minmax.h"
  7. #include <proto/exec.h>
  8. #include <proto/intuition.h>
  9. #include "amigamem.h"
  10.  
  11.  
  12.  
  13. LONG IntegerGadget_Value( IntegerGadget *self )
  14. {
  15.    LONG selection;
  16.    struct StringInfo *stringinfo;
  17.  
  18.    stringinfo = (StringInfo *) self->g.SpecialInfo;
  19.  
  20.    Forbid();
  21.    sscanf( stringinfo->Buffer, "%d", &selection );
  22.    Permit();
  23.  
  24.    return selection;
  25. }
  26.  
  27. LONG IntegerGadget_SetValue( IntegerGadget *self, LONG selection )
  28. {
  29.    struct StringInfo *stringinfo;
  30.  
  31.    stringinfo = (StringInfo *) self->g.SpecialInfo;
  32.    Forbid();
  33.    sprintf( stringinfo->Buffer, "%d", selection );
  34.    Permit();
  35.  
  36.    return selection;
  37. }
  38.  
  39. #ifdef BUILDER
  40. #include "BuilderMethods.h"
  41. #include "GraphicObject_Builder.h"
  42. #include "IntegerGadget_coder.h"
  43. #include "StringGadget_Builder.h"
  44.  
  45. IntegerGadget *IntegerGadget_New( IntegerGadget *self )
  46. {
  47.    IntegerGadget *new_gadget;
  48.    struct StringInfo *stringinfo;
  49.  
  50.    if (new_gadget = (IntegerGadget *) Amalloc( sizeof(IntegerGadget) ))
  51.    {
  52.       stringinfo = (struct StringInfo *) self->g.SpecialInfo;
  53.  
  54.        IntegerGadget_Init( new_gadget,
  55.           self->Location.x, self->Location.y,
  56.           self->Size.x, stringinfo->MaxChars-1,
  57.           self->Pens,   Title(self) );
  58.        new_gadget->g.Flags      = self->g.Flags;
  59.        GiveItAName(new_gadget);
  60.        SetStringValue( new_gadget, StringValue(self));
  61.  
  62.    }
  63.    return new_gadget;
  64. }
  65.  
  66. struct BuilderMethods IntegerGadget_bm;
  67.  
  68. #endif
  69.  
  70. BOOL IntegerGadget_elaborated = FALSE;
  71.  
  72. struct ValuatorClass IntegerGadget_Class;
  73.  
  74. void IntegerGadgetClass_Init( struct ValuatorClass *class )
  75. {
  76.    StringGadgetClass_Init( class );
  77.    class->isa          = StringGadgetClass();
  78.    class->ClassName    = "IntegerGadget";
  79.  
  80.    class->Value    = IntegerGadget_Value;
  81.    class->SetValue = IntegerGadget_SetValue;
  82.  
  83. #ifdef BUILDER
  84.    class->BuilderMethods = &IntegerGadget_bm;
  85.    go_InitBuilderMethods( &IntegerGadget_bm );
  86.    IntegerGadget_bm.New       = IntegerGadget_New;
  87.    IntegerGadget_bm.PropEdit  = StringGadget_PropEdit;
  88.    IntegerGadget_bm.WriteCode = IntegerGadget_WriteCode;
  89. #endif
  90. }
  91.  
  92.  
  93. struct ValuatorClass *IntegerGadgetClass( void )
  94. {
  95.    if (! IntegerGadget_elaborated)
  96.    {
  97.       IntegerGadgetClass_Init( &IntegerGadget_Class );
  98.       IntegerGadget_elaborated = TRUE;
  99.    }
  100.  
  101.    return &IntegerGadget_Class;
  102. }
  103.  
  104.  
  105.  
  106. void IntegerGadget_Init( IntegerGadget *self,
  107.                          PIXELS        LeftEdge,
  108.                          PIXELS        TopEdge,
  109.                          PIXELS        Width,
  110.                          USHORT        nChars,
  111.                          pcg_3DPens    Pens,
  112.                          char         *label )
  113. {
  114.    struct StringInfo *stringinfo;
  115.  
  116.    StringGadget_Init( self, LeftEdge, TopEdge, Width, nChars,
  117.                         Pens, label );
  118.  
  119.    self->isa = IntegerGadgetClass();
  120.  
  121.    stringinfo = (struct StringInfo *) self->g.SpecialInfo;
  122.  
  123.    self->g.Activation |= LONGINT;
  124.    SetValue( self, 0 );
  125. }
  126.  
  127.